// const app = getApp()
import {baseUrl} from "./config"
import { checkLogin } from "./login"
// console.log(app);
const toast = (title, reject) => {
  wx.showToast({
    title,
    icon: 'none',
  })
  reject(title)
}

const request = (url, data = {}, method = "GET",loading = true) => {
  // console.log(data);
  return new Promise((resolve, reject) => {
    if(loading) wx.showLoading({ title: '加载中', })
    let msg = ""
    wx.request({
      url: baseUrl + url,
      data,
      header: {
        Authorization: "Bearer " + wx.getStorageSync('access_token') || ""
      },
      method,
      success: (res) => {
        if (res.statusCode < 400) { 
          resolve(res.data)
        } else {
          switch (res.statusCode) {
            case 400: //服务器不理解请求的语法
              msg = res.data.message; break;
            case 401:   //（未授权）请求要求身份验证。
              if (res.data.message == "Unauthorized") {
                msg = "账号密码错误"
              } else {
                wx.removeStorageSync('access_token'),
                wx.removeStorageSync('userInfo')
                // let path = "/" + getCurrentPages().pop().route
                // console.log(path);
                // wx.setStorageSync('path',path)
                // wx.reLaunch({
                //   url: '/pages/login/login',
                // })
                checkLogin()
              }; break;
            case 403: //（禁止）无权限, 服务器拒绝请求。
              msg = "权限不够"; break;
            case 404: //（未找到） 服务器找不到请求的资源
              msg = "找不到相应资源"; break;
            case 408: //（超时） 请求超时
              msg = "连接超时,请稍后再试"; break;
            case 422: //	（验证错误） 请求参数未通过验证
              const { errors } = res.data
              msg = errors[Object.keys(errors)[0][0]]; break;
            case 429: //（被限制）请求次数过多
              msg = "连续请求次数太多,请稍后再试"; break;
            default:
              msg = "未知的错误"
              reject(res); break;
          }
        }
        // //服务器不理解请求的语法

        // if(res.statusCode == 400) 

        // //（未授权）请求要求身份验证。
        // if(res.statusCode == 401){
        //   console.log(res) 
        //   if(res.data.message == "Unauthorized"){
        //     msg = "账号密码错误"
        //   }else{

        //   }

        // }

        // //（禁止）无权限, 服务器拒绝请求。
        // if(res.statusCode == 403) msg = "权限不够"

        // //（未找到） 服务器找不到请求的资源
        // if(res.statusCode == 404) msg = "找不到相应资源"

        // //（超时） 请求超时
        // if(res.statusCode == 408) msg = "连接超时,请稍后再试"

        // //	（验证错误） 请求参数未通过验证
        // if(res.statusCode == 422) {
        //   const {errors} = res.data
        //   msg = errors[Object.keys(errors)[0][0]]
        // }
        // //（被限制）请求次数过多
        // if(res.statusCode == 429)  msg = "连续请求次数太多,请稍后再试"
        if (msg) toast(msg, reject)

      },
      fail: (err) => {
        reject(err)
      },
      complete() {
        wx.hideLoading()
        // console.log("1111");
      },
    })
  })
}

const Ajax = {
  get: (url, data = {} ,loading = true) => request(url, data, "GET",loading),
  post: (url, data = {} ,loading = true) => request(url, data, "POST",loading),
  put: (url, data = {} ,loading = true) => request(url, data, "PUT",loading),
  patch: (url, data = {} ,loading = true) => {
    data = {
      ...data,
      _method: "PATCH"
    }
    return request(url, data, "POST")
  },
  delete: (url, data = {} ,loading = true) => request(url, data, "DELETE",loading),
}

export {
  request,
  Ajax
}